//
// Created by hps on 24-4-6.
//

#ifndef EDITORBASE_H
#define EDITORBASE_H

#include "TextEdit.h"
#include "HeadFiles.h"
#include "../src/utils/utils.h"

namespace hps {

class TextEdit;

class EditorBase: public QWidget {
public:
    EditorBase();
    EditorBase(std::string filePath);
    ~EditorBase();
    void
    init();
    void setUi();

    void hideToolBar();

    void rspFunc();

    void showToolBar();

    std::string getFileName();

    std::string getFilePath() const { return m_filePath; }

    TextEdit* getEditText() const { return m_textEdit; }
    bool isFileSave() const { return m_isFileSave; }
    void openFile();

    QString getEditorName() {
        m_editorName = getFileName();
        return QString(m_editorName.c_str());
    }

   void saveFile();
    void reopen(QFile* file, QIODevice::OpenMode device);
public slots:
    void textChange();
protected:
    // 底层的Layout
    QVBoxLayout *m_layout;
    std::string m_filePath; // 当前被打开的文件路径
    std::string m_editorName;
    QFile* m_file; // 当前窗口的文件描述符
    bool m_isFileSave;

    // 编辑框顶部的工具按钮Frame
    QFrame *m_toolFrame;
    QHBoxLayout *m_toolLayout;
    std::vector<QPushButton *> m_toolButtonList;

    // 编辑框的Frame
    QFrame *m_editorFrame;
    QHBoxLayout* m_editorLayout;
    hps::TextEdit* m_textEdit;

    // 文件操作
    QTextStream* m_out;
    QDateTime m_dateTime;
};

} // hps

#endif //EDITORBASE_H
